unit UnitPacientes;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, DBGrids,
  Menus, sqldb, db, UnitMainForm;

type

  { TFormPacientes }

  TFormPacientes = class(TForm)
    Datasource1: TDatasource;
    DBGrid1: TDBGrid;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem6: TMenuItem;
    MenuItem7: TMenuItem;
    MenuItem8: TMenuItem;
    MenuItem9: TMenuItem;
    SQLQuery1: TSQLQuery;
    procedure DBGrid1CellClick(Column: TColumn);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormShow();
    procedure MenuItem2Click(Sender: TObject);
    procedure MenuItem4Click(Sender: TObject);
    procedure MenuItem5Click(Sender: TObject);
    procedure MenuItem6Click(Sender: TObject);
    procedure MenuItem8Click(Sender: TObject);
    procedure MenuItem9Click(Sender: TObject);
    procedure ordenar_grid();
  private
    { private declarations }
  public
    nombre : string;
  end; 

var
  FormPacientes: TFormPacientes;

implementation

uses
  UnitNuevoPaciente, UnitModificarPaciente;

{$R *.lfm}

{ TFormPacientes }

procedure TFormPacientes.ordenar_grid();
begin
  if SQLQuery1.Active = true then
    SQLQuery1.Close;

  SQLQuery1.SQL.Text := 'select * from paciente where pte_nombre like ''%' + nombre + '%'' order by pte_nombre';

  SQLQuery1.Open;

  DBGrid1.Columns[0].Title.Caption := 'Código';
  DBGrid1.Columns[1].Title.Caption := 'Apellido y Nombre';
  DBGrid1.Columns[2].Title.Caption := 'DNI';

  DBGrid1.Columns[0].Width := 90;
  DBGrid1.Columns[1].Width := 230;
  DBGrid1.Columns[2].Width := 110;
end;

procedure TFormPacientes.FormShow();
begin
  nombre := '%';
  ordenar_grid();
end;

procedure TFormPacientes.MenuItem2Click(Sender: TObject);
begin
  Close();
end;

procedure TFormPacientes.MenuItem4Click(Sender: TObject);
begin
  FormNuevoPaciente.ShowModal;

  SQLQuery1.Close;
  SQLQuery1.SQL.Text := 'select * from paciente';
  SQLQuery1.Open;

  SQLQuery1.ApplyUpdates;
  MainForm.SQLTransaction1.Commit;
  MainForm.ordenar_grid();

  ordenar_grid();
end;

procedure TFormPacientes.MenuItem5Click(Sender: TObject);
begin
  ShowMessage('Click en el paciente a modificar');
end;

procedure TFormPacientes.MenuItem6Click(Sender: TObject);
var
  codigo : string;

begin
  codigo := InputBox('Eliminar Paciente', 'Ingrese el código del paciente a eliminar', '');

  if codigo <> '' then
  begin
    if SQLQuery1.Active = true then
      SQLQuery1.Close;

      SQLQuery1.SQL.Text := 'delete from paciente where pte_cdg = ' + codigo;

      SQLQuery1.ExecSQL;

      SQLQuery1.SQL.Text := 'select * from paciente';

      SQLQuery1.Open;

      SQLQuery1.ApplyUpdates;
      MainForm.SQLTransaction1.Commit;
      MainForm.ordenar_grid();

      ShowMessage('Baja Exitosa');

      ordenar_grid();
  end;
end;

procedure TFormPacientes.MenuItem8Click(Sender: TObject);
begin
  nombre := InputBox('Filtro por Apellido', 'Ingrese parte del apellido del paciente:', '');

  if nombre <> '' then
    ordenar_grid()
  else
    FormShow();
end;

procedure TFormPacientes.MenuItem9Click(Sender: TObject);
begin
  FormShow();
end;

procedure TFormPacientes.FormClose(Sender: TObject;
  var CloseAction: TCloseAction);
begin
  if SQLQuery1.Active = true then
    SQLQuery1.Close;
end;

procedure TFormPacientes.DBGrid1CellClick(Column: TColumn);
begin
  FormModificacionPaciente.Label3.Caption := SQLQuery1.FieldByName('pte_cdg').AsString;
  FormModificacionPaciente.Edit1.Text := SQLQuery1.FieldByName('pte_nombre').AsString;
  FormModificacionPaciente.Edit2.Text := SQLQuery1.FieldByName('pte_dni').AsString;

  FormModificacionPaciente.ShowModal;

  SQLQuery1.Close;
  SQLQuery1.SQL.Text := 'select * from paciente';
  SQLQuery1.Open;

  SQLQuery1.ApplyUpdates;
  MainForm.SQLTransaction1.Commit;
  MainForm.ordenar_grid();

  ordenar_grid();
end;

end.

